/**
 * 控制器基类
 */
const { appCode, PmValidate } = require('../config/libs_config');

class BaseController {
    /**
     * 构造函数
     */
    constructor() {
        this._pmValidate = new PmValidate();
    }

    /**
     * 校验参数
     * @param {Object} rules 校验规则
     * @param {Object} formData 表单数据
     */
    validateData(rules, formData = null) {
        let params = formData;
        if (!params) {
            // 获取请求上下文中的参数
            params = {
                ...this._request.data,
                ...this._request.params
            };
        }
        
        let check = this._pmValidate.check(params, rules);
        if (!check) {
            let errMsg = this._pmValidate.getError();
            throw new AppError(errMsg, appCode.LOGIC);
        }
        
        return this._pmValidate.getData();
    }

    /**
     * 返回成功
     * @param {*} data 返回数据
     */
    success(data) {
        return {
            code: 0,
            data
        };
    }

    /**
     * 返回失败
     * @param {String} message 错误信息
     * @param {Number} code 错误码
     */
    fail(message, code = -1) {
        return {
            code,
            message
        };
    }
}

// 注册控制器
module.exports = BaseController; 